<!DOCTYPE html>
<html id="docs" lang="en" class="">
	<head>
	<meta charset="utf-8">
<title>Upgrading kubeadm clusters from 1.7 to 1.8 - Kubernetes</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" type="image/png" href="../../../../../images/favicon.png">
<link rel="stylesheet" type="text/css" href="../../../../../css/base_fonts.css">
<link rel="stylesheet" type="text/css" href="../../../../../css/styles.css">
<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../css/callouts.css">
<link rel="stylesheet" type="text/css" href="../../../../../css/custom-jekyll/tags.css">




<meta name="description" content="Upgrading kubeadm clusters from 1.7 to 1.8" />
<meta property="og:description" content="Upgrading kubeadm clusters from 1.7 to 1.8" />

<meta property="og:url" content="https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-8/" />
<meta property="og:title" content="Upgrading kubeadm clusters from 1.7 to 1.8 - Kubernetes" />

<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<script
src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<script src="../../../../../js/script.js"></script>
<script src="../../../../../js/custom-jekyll/tags.js"></script>


	</head>
	<body>
		<div id="cellophane" onclick="kub.toggleMenu()"></div>

<header>
    <a href="../../../../../index.html" class="logo"></a>

    <div class="nav-buttons" data-auto-burger="primary">
        <ul class="global-nav">
            
            
            <li><a href="../../../../home.1">Documentation</a></li>
            
            <li><a href="../../../../../blog/index.html">Blog</a></li>
            
            <li><a href="../../../../../partners/index.html">Partners</a></li>
            
            <li><a href="../../../../../community/index.html">Community</a></li>
            
            <li><a href="../../../../../case-studies/index.html">Case Studies</a></li>
            
            
             <li>
                <a href="index.html#">
                    English <span class="ui-icon ui-icon-carat-1-s"></span>
                </a>
                <ul>
                
                    <li><a href="../../../../../zh/index.html">中文 Chinese</a></li>
                
                    <li><a href="../../../../../ko/index.html">한국어 Korean</a></li>
                
                </ul>
            </li>
         
            <li>
                <a href="index.html#">
                    v1.11 <span class="ui-icon ui-icon-carat-1-s"></span>
                </a>
                <ul>
                
                    <li><a href="https://kubernetes.io">v1.12</a></li>
                
                    <li><a href="../../../../../index.html">v1.11</a></li>
                
                    <li><a href="https://v1-10.docs.kubernetes.io">v1.10</a></li>
                
                    <li><a href="https://v1-9.docs.kubernetes.io">v1.9</a></li>
                
                </ul>
            </li>
        </ul>
        
        <a href="../../../../tutorials/kubernetes-basics/index.html" class="button" id="tryKubernetes" data-auto-burger-exclude>Try Kubernetes</a>
        <button id="hamburger" onclick="kub.toggleMenu()" data-auto-burger-exclude><div></div></button>
    </div>

    <nav id="mainNav">
        <main data-auto-burger="primary">
        <div class="nav-box">
            <h3><a href="../../../../tutorials/stateless-application/hello-minikube/index.html">Get Started</a></h3>
            <p>Ready to get your hands dirty? Build a simple Kubernetes cluster that runs "Hello World" for Node.js.</p>
        </div>
        <div class="nav-box">
            <h3><a href="../../../../home.1">Documentation</a></h3>
            <p>Learn how to use Kubernetes with the use of walkthroughs, samples, and reference documentation. You can even <a href="../../../../../editdocs/index.html" data-auto-burger-exclude>help contribute to the docs</a>!</p>
        </div>
        <div class="nav-box">
            <h3><a href="../../../../../community/index.html">Community</a></h3>
            <p>If you need help, you can connect with other Kubernetes users and the Kubernetes authors, attend community events, and watch video presentations from around the web.</p>
        </div>
        <div class="nav-box">
            <h3><a href="../../../../../blog/index.html">Blog</a></h3>
            <p>Read the latest news for Kubernetes and the containers space in general, and get technical how-tos hot off the presses.</p>
        </div>
        </main>
        <main data-auto-burger="primary">
        <div class="left">
            <h5 class="github-invite">Interested in hacking on the core Kubernetes code base?</h5>
            <a href="https://github.com/kubernetes/kubernetes" class="button" data-auto-burger-exclude>View On Github</a>
        </div>

        <div class="right">
            <h5 class="github-invite">Explore the community</h5>
            <div class="social">
                <a href="https://twitter.com/kubernetesio" class="twitter"><span>Twitter</span></a>
                <a href="https://github.com/kubernetes/kubernetes" class="github"><span>Github</span></a>
                <a href="http://slack.k8s.io/" class="slack"><span>Slack</span></a>
                <a href="http://stackoverflow.com/questions/tagged/kubernetes" class="stack-overflow"><span>Stack Overflow</span></a>
                <a href="https://discuss.kubernetes.io" class="mailing-list"><span>Forum</span></a>
                <a href="https://calendar.google.com/calendar/embed?src=nt2tcnbtbied3l6gi2h29slvc0%40group.calendar.google.com" class="calendar"><span>Events Calendar</span></a>
            </div>
        </div>
        <div class="clear" style="clear: both"></div>
        </main>
    </nav>
</header>

		
		
		<section id="hero" class="light-text no-sub">
			











<h1>Tasks</h1>
<h5></h5>






<div id="vendorStrip" class="light-text">
	<ul>
		
		
		<li><a href="../../../../home.1">DOCUMENTATION</a></li>
		
		
		<li><a href="../../../../setup/index.html">SETUP</a></li>
		
		
		<li><a href="../../../../concepts/index.html">CONCEPTS</a></li>
		
		
		<li><a href="../../../index.html" class="YAH">TASKS</a></li>
		
		
		<li><a href="../../../../tutorials/index.html">TUTORIALS</a></li>
		
		
		<li><a href="../../../../reference.1">REFERENCE</a></li>
		
	</ul>
	<div id="searchBox">
		<input type="text" id="search" placeholder="Search" onkeydown="if (event.keyCode==13) window.location.replace('/docs/search/?q=' + this.value)" autofocus="autofocus">
	</div>
</div>

		</section>
		
		
<section id="deprecationWarning">
  <main>
    <div class="content deprecation-warning">
      <h3>
        Documentation for Kubernetes v1.11 is no longer actively maintained. The version you are currently viewing is a static snapshot.
        For up-to-date documentation, see the <a href="https://kubernetes.io/docs/home/">latest</a> version.
      </h3>
    </div>
  </main>
</section>


		<section id="encyclopedia">
			
<div id="docsToc">
     <div class="pi-accordion">
    	
        
        
        
        
        
         
             
                 
             
         
             
                 
             
         
             
                 
             
         
             
                 
             
         
             
                 
                          
                          
                 
             
         
             
         
             
         
             
         
         
        
        <a class="item" data-title="Tasks" href="../../../index.html"></a>

	
	
		
		
	<div class="item" data-title="Install Tools">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Install and Set Up kubectl" href="../../../kubectl/install/index.html"></a>

		
	
		
		
<a class="item" data-title="Install Minikube" href="../../../tools/install-minikube/index.html"></a>

		
	
		
		
<a class="item" data-title="Installing kubeadm" href="../../../../setup/independent/install-kubeadm/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Configure Pods and Containers">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Assign Memory Resources to Containers and Pods" href="../../../configure-pod-container/assign-cpu-ram-container"></a>

		
	
		
		
<a class="item" data-title="Assign CPU Resources to Containers and Pods" href="../../../configure-pod-container/assign-cpu-resource/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Quality of Service for Pods" href="../../../configure-pod-container/quality-service-pod/index.html"></a>

		
	
		
		
<a class="item" data-title="Assign Extended Resources to a Container" href="../../../configure-pod-container/extended-resource/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure a Pod to Use a Volume for Storage" href="../../../configure-pod-container/configure-volume-storage/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure a Pod to Use a PersistentVolume for Storage" href="../../../configure-pod-container/configure-persistent-volume-storage/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure a Pod to Use a Projected Volume for Storage" href="../../../configure-pod-container/configure-projected-volume-storage/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure a Security Context for a Pod or Container" href="../../../../user-guide/security-context"></a>

		
	
		
		
<a class="item" data-title="Configure Service Accounts for Pods" href="../../../../user-guide/service-accounts"></a>

		
	
		
		
<a class="item" data-title="Pull an Image from a Private Registry" href="../../../configure-pod-container/pull-image-private-registry/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Liveness and Readiness Probes" href="../../../../user-guide/liveness/index.html"></a>

		
	
		
		
<a class="item" data-title="Assign Pods to Nodes" href="../../../configure-pod-container/assign-pods-nodes/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Pod Initialization" href="../../../configure-pod-container/configure-pod-initialization/index.html"></a>

		
	
		
		
<a class="item" data-title="Attach Handlers to Container Lifecycle Events" href="../../../configure-pod-container/attach-handler-lifecycle-event/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure a Pod to Use a ConfigMap" href="../../../configure-pod-container/configure-pod-configmap/index.html"></a>

		
	
		
		
<a class="item" data-title="Share Process Namespace between Containers in a Pod" href="../../../configure-pod-container/share-process-namespace/index.html"></a>

		
	
		
		
<a class="item" data-title="Translate a Docker Compose File to Kubernetes Resources" href="../../../configure-pod-container/translate-compose-kubernetes/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Administer a Cluster">
		<div class="container">
		
		
	
	
		
		
	<div class="item" data-title="Administration with kubeadm">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Upgrading kubeadm HA clusters from 1.9.x to 1.9.y" href="../kubeadm-upgrade-ha/index.html"></a>

		
	
		
		
<a class="item" data-title="Upgrading kubeadm clusters from 1.7 to 1.8" href="index.html"></a>

		
	
		
		
<a class="item" data-title="Upgrading kubeadm clusters from v1.10 to v1.11" href="../kubeadm-upgrade-1-11/index.html"></a>

		
	
		
		
<a class="item" data-title="Upgrading/downgrading kubeadm clusters between v1.8 to v1.9" href="../kubeadm-upgrade-1-9/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Manage Memory, CPU, and API Resources">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Configure Default Memory Requests and Limits for a Namespace" href="../../../configure-pod-container/limit-range/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Default CPU Requests and Limits for a Namespace" href="../../cpu-default-namespace/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Minimum and Maximum Memory Constraints for a Namespace" href="../../memory-constraint-namespace/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Minimum and Maximum CPU Constraints for a Namespace" href="../../cpu-constraint-namespace/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Memory and CPU Quotas for a Namespace" href="../../quota-memory-cpu-namespace/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure a Pod Quota for a Namespace" href="../../quota-pod-namespace/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Install a Network Policy Provider">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Use Calico for NetworkPolicy" href="../../network-policy-provider/calico-network-policy/index.html"></a>

		
	
		
		
<a class="item" data-title="Use Cilium for NetworkPolicy" href="../../network-policy-provider/cilium-network-policy/index.html"></a>

		
	
		
		
<a class="item" data-title="Use Kube-router for NetworkPolicy" href="../../network-policy-provider/kube-router-network-policy/index.html"></a>

		
	
		
		
<a class="item" data-title="Romana for NetworkPolicy" href="../../network-policy-provider/romana-network-policy/index.html"></a>

		
	
		
		
<a class="item" data-title="Weave Net for NetworkPolicy" href="../../network-policy-provider/weave-network-policy/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
<a class="item" data-title="Access Clusters Using the Kubernetes API" href="../../access-cluster-api/index.html"></a>

		
	
		
		
<a class="item" data-title="Access Services Running on Clusters" href="../../access-cluster-services/index.html"></a>

		
	
		
		
<a class="item" data-title="Advertise Extended Resources for a Node" href="../../extended-resource-node/index.html"></a>

		
	
		
		
<a class="item" data-title="Autoscale the DNS Service in a Cluster" href="../../dns-horizontal-autoscaling/index.html"></a>

		
	
		
		
<a class="item" data-title="Change the Reclaim Policy of a PersistentVolume" href="../../change-pv-reclaim-policy/index.html"></a>

		
	
		
		
<a class="item" data-title="Change the default StorageClass" href="../../change-default-storage-class/index.html"></a>

		
	
		
		
<a class="item" data-title="Cluster Management" href="../../../../admin/cluster-management/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Multiple Schedulers" href="../../configure-multiple-schedulers/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Out Of Resource Handling" href="../../reserve-compute-resources/out-of-resource.md"></a>

		
	
		
		
<a class="item" data-title="Configure Quotas for API Objects" href="../../quota-api-object/index.html"></a>

		
	
		
		
<a class="item" data-title="Control CPU Management Policies on the Node" href="../../cpu-management-policies/index.html"></a>

		
	
		
		
<a class="item" data-title="Customizing DNS Service" href="../../dns-custom-nameservers/index.html"></a>

		
	
		
		
<a class="item" data-title="Debugging DNS Resolution" href="../../dns-debugging-resolution/index.html"></a>

		
	
		
		
<a class="item" data-title="Declare Network Policy" href="../../../configure-pod-container/declare-network-policy/index.html"></a>

		
	
		
		
<a class="item" data-title="Developing Cloud Controller Manager" href="../../developing-cloud-controller-manager.md"></a>

		
	
		
		
<a class="item" data-title="Encrypting Secret Data at Rest" href="../../encrypt-data.1"></a>

		
	
		
		
<a class="item" data-title="Guaranteed Scheduling For Critical Add-On Pods" href="../../guaranteed-scheduling-critical-addon-pods/index.html"></a>

		
	
		
		
<a class="item" data-title="IP Masquerade Agent User Guide" href="../../ip-masq-agent/index.html"></a>

		
	
		
		
<a class="item" data-title="Kubernetes Cloud Controller Manager" href="../../running-cloud-controller.md"></a>

		
	
		
		
<a class="item" data-title="Limit Storage Consumption" href="../../limit-storage-consumption/index.html"></a>

		
	
		
		
<a class="item" data-title="Namespaces Walkthrough" href="../../namespaces-walkthrough/index.html"></a>

		
	
		
		
<a class="item" data-title="Operating etcd clusters for Kubernetes" href="../../configure-upgrade-etcd/index.html"></a>

		
	
		
		
<a class="item" data-title="Reconfigure a Node&#39;s Kubelet in a Live Cluster" href="../../reconfigure-kubelet.1"></a>

		
	
		
		
<a class="item" data-title="Reserve Compute Resources for System Daemons" href="../../reserve-compute-resources/index.html"></a>

		
	
		
		
<a class="item" data-title="Safely Drain a Node while Respecting Application SLOs" href="../../safely-drain-node/index.html"></a>

		
	
		
		
<a class="item" data-title="Securing a Cluster" href="../../securing-a-cluster/index.html"></a>

		
	
		
		
<a class="item" data-title="Set Kubelet parameters via a config file" href="../../kubelet-config-file.1"></a>

		
	
		
		
<a class="item" data-title="Set up High-Availability Kubernetes Masters" href="../../highly-available-master/index.html"></a>

		
	
		
		
<a class="item" data-title="Set up a Highly Availabile etcd Cluster With kubeadm" href="../../setup-ha-etcd-with-kubeadm/index.html"></a>

		
	
		
		
<a class="item" data-title="Share a Cluster with Namespaces" href="../../../../admin/namespaces"></a>

		
	
		
		
<a class="item" data-title="Static Pods" href="../../../../concepts/cluster-administration/static-pod/index.html"></a>

		
	
		
		
<a class="item" data-title="Storage Object in Use Protection" href="../../storage-object-in-use-protection/index.html"></a>

		
	
		
		
<a class="item" data-title="Using CoreDNS for Service Discovery" href="../../coredns/index.html"></a>

		
	
		
		
<a class="item" data-title="Using a KMS provider for data encryption" href="../../kms-provider/index.html"></a>

		
	
		
		
<a class="item" data-title="Using sysctls in a Kubernetes Cluster" href="../../../../concepts/cluster-administration/sysctl-cluster/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Inject Data Into Applications">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Define a Command and Arguments for a Container" href="../../../../user-guide/containers/index.html"></a>

		
	
		
		
<a class="item" data-title="Define Environment Variables for a Container" href="../../../inject-data-application/define-environment-variable-container/index.html"></a>

		
	
		
		
<a class="item" data-title="Expose Pod Information to Containers Through Environment Variables" href="../../../configure-pod-container/environment-variable-expose-pod-information/index.html"></a>

		
	
		
		
<a class="item" data-title="Expose Pod Information to Containers Through Files" href="../../../inject-data-application/downward-api-volume-expose-pod-information/index.html"></a>

		
	
		
		
<a class="item" data-title="Distribute Credentials Securely Using Secrets" href="../../../inject-data-application/distribute-credentials-secure/index.html"></a>

		
	
		
		
<a class="item" data-title="Inject Information into Pods Using a PodPreset" href="../../../inject-data-application/podpreset.1"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Run Applications">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Run a Stateless Application Using a Deployment" href="../../../../user-guide/simple-nginx"></a>

		
	
		
		
<a class="item" data-title="Run a Single-Instance Stateful Application" href="../../../../tutorials/stateful-application/run-stateful-application/index.html"></a>

		
	
		
		
<a class="item" data-title="Run a Replicated Stateful Application" href="../../../run-application/run-replicated-stateful-application/index.html"></a>

		
	
		
		
<a class="item" data-title="Update API Objects in Place Using kubectl patch" href="../../../run-application/update-api-object-kubectl-patch/index.html"></a>

		
	
		
		
<a class="item" data-title="Scale a StatefulSet" href="../../../run-application/scale-stateful-set/index.html"></a>

		
	
		
		
<a class="item" data-title="Delete a StatefulSet" href="../../../manage-stateful-set/delete-pods/index.html"></a>

		
	
		
		
<a class="item" data-title="Force Delete StatefulSet Pods" href="../../../run-application/force-delete-stateful-set-pod/index.html"></a>

		
	
		
		
<a class="item" data-title="Perform Rolling Update Using a Replication Controller" href="../../../run-application/rolling-update-replication-controller/index.html"></a>

		
	
		
		
<a class="item" data-title="Horizontal Pod Autoscaler" href="../../../run-application/horizontal-pod-autoscale/index.html"></a>

		
	
		
		
<a class="item" data-title="Horizontal Pod Autoscaler Walkthrough" href="../../../run-application/horizontal-pod-autoscale-walkthrough/index.html"></a>

		
	
		
		
<a class="item" data-title="Specifying a Disruption Budget for your Application" href="../../../configure-pod-container/configure-pod-disruption-budget/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Run Jobs">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Running automated tasks with cron jobs" href="../../../job/automated-tasks-with-cron-jobs.1"></a>

		
	
		
		
<a class="item" data-title="Parallel Processing using Expansions" href="../../../job/parallel-processing-expansion/index.html"></a>

		
	
		
		
<a class="item" data-title="Coarse Parallel Processing Using a Work Queue" href="../../../job/coarse-parallel-processing-work-queue/index.html"></a>

		
	
		
		
<a class="item" data-title="Fine Parallel Processing Using a Work Queue" href="../../../job/fine-parallel-processing-work-queue/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Access Applications in a Cluster">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Web UI (Dashboard)" href="../../../web-ui-dashboard/index.html"></a>

		
	
		
		
<a class="item" data-title="Accessing Clusters" href="../../../../concepts/cluster-administration/access-cluster/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure Access to Multiple Clusters" href="../../../access-application-cluster/authenticate-across-clusters-kubeconfig/index.html"></a>

		
	
		
		
<a class="item" data-title="Use Port Forwarding to Access Applications in a Cluster" href="../../../access-application-cluster/port-forward-access-application-cluster/index.html"></a>

		
	
		
		
<a class="item" data-title="Provide Load-Balanced Access to an Application in a Cluster" href="../../../access-application-cluster/load-balance-access-application-cluster/index.html"></a>

		
	
		
		
<a class="item" data-title="Use a Service to Access an Application in a Cluster" href="../../../access-application-cluster/service-access-application-cluster.1"></a>

		
	
		
		
<a class="item" data-title="Connect a Front End to a Back End Using a Service" href="../../../access-application-cluster/connecting-frontend-backend/index.html"></a>

		
	
		
		
<a class="item" data-title="Create an External Load Balancer" href="../../../../user-guide/load-balancer"></a>

		
	
		
		
<a class="item" data-title="Configure Your Cloud Provider&#39;s Firewalls" href="../../../access-application-cluster/configure-cloud-provider-firewall/index.html"></a>

		
	
		
		
<a class="item" data-title="List All Container Images Running in a Cluster" href="../../../access-application-cluster/list-all-running-container-images/index.html"></a>

		
	
		
		
<a class="item" data-title="Communicate Between Containers in the Same Pod Using a Shared Volume" href="../../../access-application-cluster/communicate-containers-same-pod-shared-volume/index.html"></a>

		
	
		
		
<a class="item" data-title="Configure DNS for a Cluster" href="../../../access-application-cluster/configure-dns-cluster/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Monitor, Log, and Debug">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Application Introspection and Debugging" href="../../../debug-application-cluster/debug-application-introspection/index.html"></a>

		
	
		
		
<a class="item" data-title="Auditing" href="../../../debug-application-cluster/audit/index.html"></a>

		
	
		
		
<a class="item" data-title="Core metrics pipeline" href="../../../debug-application-cluster/core-metrics-pipeline/index.html"></a>

		
	
		
		
<a class="item" data-title="Debug Init Containers" href="../../../debug-application-cluster/debug-init-containers/index.html"></a>

		
	
		
		
<a class="item" data-title="Debug Pods and Replication Controllers" href="../../../debug-application-cluster/debug-pod-replication-controller/index.html"></a>

		
	
		
		
<a class="item" data-title="Debug Services" href="../../../../user-guide/debugging-services"></a>

		
	
		
		
<a class="item" data-title="Debug a StatefulSet" href="../../../manage-stateful-set/debugging-a-statefulset/index.html"></a>

		
	
		
		
<a class="item" data-title="Debugging Kubernetes nodes with crictl" href="../../../debug-application-cluster/crictl/index.html"></a>

		
	
		
		
<a class="item" data-title="Determine the Reason for Pod Failure" href="../../../debug-application-cluster/determine-reason-pod-failure/index.html"></a>

		
	
		
		
<a class="item" data-title="Developing and debugging services locally" href="../../../debug-application-cluster/local-debugging/index.html"></a>

		
	
		
		
<a class="item" data-title="Events in Stackdriver" href="../../../debug-application-cluster/events-stackdriver/index.html"></a>

		
	
		
		
<a class="item" data-title="Get a Shell to a Running Container" href="../../../debug-application-cluster/get-shell-running-container/index.html"></a>

		
	
		
		
<a class="item" data-title="Logging Using Elasticsearch and Kibana" href="../../../../user-guide/logging/elasticsearch.1"></a>

		
	
		
		
<a class="item" data-title="Logging Using Stackdriver" href="../../../../user-guide/logging/stackdriver.1"></a>

		
	
		
		
<a class="item" data-title="Monitor Node Health" href="../../../debug-application-cluster/monitor-node-health/index.html"></a>

		
	
		
		
<a class="item" data-title="Tools for Monitoring Compute, Storage, and Network Resources" href="../../../debug-application-cluster/resource-usage-monitoring/index.html"></a>

		
	
		
		
<a class="item" data-title="Troubleshoot Applications" href="../../../debug-application-cluster/debug-application.1"></a>

		
	
		
		
<a class="item" data-title="Troubleshoot Clusters" href="../../../../admin/cluster-troubleshooting.1"></a>

		
	
		
		
<a class="item" data-title="Troubleshooting" href="../../../../troubleshooting/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Extend Kubernetes">
		<div class="container">
		
		
	
	
		
		
	<div class="item" data-title="Use Custom Resources">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Extend the Kubernetes API with CustomResourceDefinitions" href="../../../access-kubernetes-api/extend-api-custom-resource-definitions/index.html"></a>

		
	
		
		
<a class="item" data-title="Versions of CustomResourceDefinitions" href="../../../access-kubernetes-api/custom-resources/custom-resource-definition-versioning/index.html"></a>

		
	
		
		
<a class="item" data-title="Migrate a ThirdPartyResource to CustomResourceDefinition" href="../../../access-kubernetes-api/migrate-third-party-resource/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
<a class="item" data-title="Configure the aggregation layer" href="../../../access-kubernetes-api/configure-aggregation-layer/index.html"></a>

		
	
		
		
<a class="item" data-title="Setup an extension API server" href="../../../access-kubernetes-api/setup-extension-api-server/index.html"></a>

		
	
		
		
<a class="item" data-title="Use an HTTP Proxy to Access the Kubernetes API" href="../../../access-kubernetes-api/http-proxy-access-api.1"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="TLS">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Certificate Rotation" href="../../../tls/certificate-rotation/index.html"></a>

		
	
		
		
<a class="item" data-title="Manage TLS Certificates in a Cluster" href="../../../tls/managing-tls-in-a-cluster.1"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Federation - Run an App on Multiple Clusters">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Cross-cluster Service Discovery using Federated Services" href="../../../../concepts/cluster-administration/federation-service-discovery/index.html"></a>

		
	
		
		
<a class="item" data-title="Set up Cluster Federation with Kubefed" href="../../../../tutorials/federation/set-up-cluster-federation-kubefed/index.html"></a>

		
	
		
		
<a class="item" data-title="Set up CoreDNS as DNS provider for Cluster Federation" href="../../../federation/set-up-coredns-provider-federation/index.html"></a>

		
	
		
		
<a class="item" data-title="Set up placement policies in Federation" href="../../../federation/set-up-placement-policies-federation/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Manage Cluster Daemons">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Perform a Rolling Update on a DaemonSet" href="../../../manage-daemon/update-daemon-set/index.html"></a>

		
	
		
		
<a class="item" data-title="Performing a Rollback on a DaemonSet" href="../../../manage-daemon/rollback-daemon-set/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Install Service Catalog">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Install Service Catalog using Helm" href="../../../service-catalog/install-service-catalog-using-helm/index.html"></a>

		
	
		
		
<a class="item" data-title="Install Service Catalog using SC" href="../../../service-catalog/install-service-catalog-using-sc/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Federation - Run an App on Multiple Clusters">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Federated Cluster" href="../../../administer-federation/cluster/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated ConfigMap" href="../../../administer-federation/configmap/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated DaemonSet" href="../../../administer-federation/daemonset/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated Deployment" href="../../../administer-federation/deployment/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated Events" href="../../../administer-federation/events/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated Horizontal Pod Autoscalers (HPA)" href="../../../administer-federation/hpa/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated Ingress" href="../../../administer-federation/ingress/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated Jobs" href="../../../administer-federation/job/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated Namespaces" href="../../../administer-federation/namespaces/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated ReplicaSets" href="../../../administer-federation/replicaset/index.html"></a>

		
	
		
		
<a class="item" data-title="Federated Secrets" href="../../../administer-federation/secret/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
<a class="item" data-title="Extend kubectl with plugins" href="../../../extend-kubectl/kubectl-plugins/index.html"></a>

		
	
		
		
<a class="item" data-title="Manage HugePages" href="../../../manage-hugepages/scheduling-hugepages/index.html"></a>

		
	
		
		
<a class="item" data-title="Schedule GPUs" href="../../../manage-gpus/scheduling-gpus/index.html"></a>

		
	






     </div> 
    <button class="push-menu-close-button" onclick="kub.toggleToc()"></button>
</div> 

			<div id="docsContent">
				
<p><a href="../../../../editdocs#docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-8.md" id="editPageButton">Edit This Page</a></p>

<h1>Upgrading kubeadm clusters from 1.7 to 1.8</h1>




<p>This guide is for upgrading <code>kubeadm</code> clusters from version 1.7.x to 1.8.x, as well as 1.7.x to 1.7.y and 1.8.x to 1.8.y where <code>y &gt; x</code>.
See also <a href="https://v1-11.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm-upgrade-1-7/">upgrading kubeadm clusters from 1.6 to 1.7</a> if you&rsquo;re on a 1.6 cluster currently.</p>











<ul id="markdown-toc">










<li><a href="index.html#before-you-begin">Before you begin</a></li>












<li><a href="index.html#upgrading-your-control-plane">Upgrading your control plane</a></li>




<li><a href="index.html#upgrading-your-master-and-node-packages">Upgrading your master and node packages</a></li>




<li><a href="index.html#recovering-from-a-bad-state">Recovering from a bad state</a></li>



























</ul>



<h2 id="before-you-begin">Before you begin</h2>
<p>Before proceeding:</p>

<ul>
<li>You need to have a functional <code>kubeadm</code> Kubernetes cluster running version 1.7.0 or higher in order to use the process described here.</li>
<li>Make sure you read the <a href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#v180-beta1" target="_blank">release notes</a> carefully.</li>
<li>As <code>kubeadm upgrade</code> does not upgrade etcd make sure to back it up. You can, for example, use <code>etcdctl backup</code> to take care of this.</li>
<li>Note that <code>kubeadm upgrade</code> will not touch any of your workloads, only Kubernetes-internal components. As a best-practice you should back up what&rsquo;s important to you. For example, any app-level state, such as a database an app might depend on (like MySQL or MongoDB) must be backed up beforehand.</li>
</ul>

<p>Also, note that only one minor version upgrade is supported. That is, you can only upgrade from, say 1.7 to 1.8, not from 1.7 to 1.9.</p>




<h2 id="upgrading-your-control-plane">Upgrading your control plane</h2>

<p>You have to carry out the following steps by executing these commands on your master node:</p>

<ol>
<li>Install the most recent version of <code>kubeadm</code> using <code>curl</code> like so:</li>
</ol>

<blockquote class="caution">
  <div><div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#a2f">export</span> <span style="color:#b8860b">VERSION</span><span style="color:#666">=</span><span style="color:#a2f;font-weight:bold">$(</span>curl -sSL https://dl.k8s.io/release/stable.txt<span style="color:#a2f;font-weight:bold">)</span> <span style="color:#080;font-style:italic"># or manually specify a released Kubernetes version
</span><span style="color:#080;font-style:italic"></span><span style="color:#a2f">export</span> <span style="color:#b8860b">ARCH</span><span style="color:#666">=</span>amd64 <span style="color:#080;font-style:italic"># or: arm, arm64, ppc64le, s390x
</span><span style="color:#080;font-style:italic"></span>curl -sSL https://dl.k8s.io/release/<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">VERSION</span><span style="color:#b68;font-weight:bold">}</span>/bin/linux/<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARCH</span><span style="color:#b68;font-weight:bold">}</span>/kubeadm &gt; /usr/bin/kubeadm
chmod a+rx /usr/bin/kubeadm</code></pre></div>
<p><strong>Caution:</strong> Upgrading the <code>kubeadm</code> package on your system prior to
upgrading the control plane causes a failed upgrade. Even though
<code>kubeadm</code> is shipped in the Kubernetes repositories, it&rsquo;s important
to install <code>kubeadm</code> manually. The kubeadm team is working on fixing
this limitation.</p>
</div>
</blockquote>

<p>Verify that this download of kubeadm works, and has the expected version:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubeadm version</code></pre></div>
<ol>
<li>If this the first time you use <code>kubeadm upgrade</code>, in order to preserve the configuration for future upgrades, do:</li>
</ol>

<p>Note that for below you will need to recall what CLI args you passed to <code>kubeadm init</code> the first time.</p>

<p>If you used flags, do:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubeadm config upload from-flags <span style="color:#666">[</span>flags<span style="color:#666">]</span></code></pre></div>
<p>Where <code>flags</code> can be empty.</p>

<p>If you used a config file, do:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubeadm config upload from-file --config <span style="color:#666">[</span>config<span style="color:#666">]</span></code></pre></div>
<p>Where the <code>config</code> is mandatory.</p>

<ol>
<li>On the master node, run the following:</li>
</ol>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubeadm upgrade plan</code></pre></div>
<p>You should see output similar to this:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#666">[</span>preflight<span style="color:#666">]</span> Running pre-flight checks
<span style="color:#666">[</span>upgrade<span style="color:#666">]</span> Making sure the cluster is healthy:
<span style="color:#666">[</span>upgrade/health<span style="color:#666">]</span> Checking API Server health: Healthy
<span style="color:#666">[</span>upgrade/health<span style="color:#666">]</span> Checking Node health: All Nodes are healthy
<span style="color:#666">[</span>upgrade/health<span style="color:#666">]</span> Checking Static Pod manifests exists on disk: All manifests exist on disk
<span style="color:#666">[</span>upgrade/config<span style="color:#666">]</span> Making sure the configuration is correct:
<span style="color:#666">[</span>upgrade/config<span style="color:#666">]</span> Reading configuration from the cluster...
<span style="color:#666">[</span>upgrade/config<span style="color:#666">]</span> FYI: You can look at this config file with <span style="color:#b44">&#39;kubectl -n kube-system get cm kubeadm-config -o yaml&#39;</span>
<span style="color:#666">[</span>upgrade<span style="color:#666">]</span> Fetching available versions to upgrade to:
<span style="color:#666">[</span>upgrade/versions<span style="color:#666">]</span> Cluster version: v1.7.1
<span style="color:#666">[</span>upgrade/versions<span style="color:#666">]</span> kubeadm version: v1.8.0
<span style="color:#666">[</span>upgrade/versions<span style="color:#666">]</span> Latest stable version: v1.8.0
<span style="color:#666">[</span>upgrade/versions<span style="color:#666">]</span> Latest version in the v1.7 series: v1.7.6

Components that must be upgraded manually after you<span style="color:#b44">&#39;ve upgraded the control plane with &#39;</span>kubeadm upgrade apply<span style="color:#b44">&#39;:
</span><span style="color:#b44">COMPONENT   CURRENT      AVAILABLE
</span><span style="color:#b44">Kubelet     1 x v1.7.1   v1.7.6
</span><span style="color:#b44">
</span><span style="color:#b44">Upgrade to the latest version in the v1.7 series:
</span><span style="color:#b44">
</span><span style="color:#b44">COMPONENT            CURRENT   AVAILABLE
</span><span style="color:#b44">API Server           v1.7.1    v1.7.6
</span><span style="color:#b44">Controller Manager   v1.7.1    v1.7.6
</span><span style="color:#b44">Scheduler            v1.7.1    v1.7.6
</span><span style="color:#b44">Kube Proxy           v1.7.1    v1.7.6
</span><span style="color:#b44">Kube DNS             1.14.4    1.14.4
</span><span style="color:#b44">
</span><span style="color:#b44">You can now apply the upgrade by executing the following command:
</span><span style="color:#b44">
</span><span style="color:#b44">	kubeadm upgrade apply v1.7.6
</span><span style="color:#b44">
</span><span style="color:#b44">_____________________________________________________________________
</span><span style="color:#b44">
</span><span style="color:#b44">Components that must be upgraded manually after you&#39;</span>ve upgraded the control plane with <span style="color:#b44">&#39;kubeadm upgrade apply&#39;</span>:
COMPONENT   CURRENT      AVAILABLE
Kubelet     <span style="color:#666">1</span> x v1.7.1   v1.8.0

Upgrade to the latest stable version:

COMPONENT            CURRENT   AVAILABLE
API Server           v1.7.1    v1.8.0
Controller Manager   v1.7.1    v1.8.0
Scheduler            v1.7.1    v1.8.0
Kube Proxy           v1.7.1    v1.8.0
Kube DNS             <span style="color:#666">1</span>.14.4    <span style="color:#666">1</span>.14.4

You can now apply the upgrade by executing the following command:

	kubeadm upgrade apply v1.8.0

Note: Before you <span style="color:#a2f;font-weight:bold">do</span> can perform this upgrade, you have to update kubeadm to v1.8.0

_____________________________________________________________________</code></pre></div>
<p>The <code>kubeadm upgrade plan</code> checks that your cluster is in an upgradeable state and fetches the versions available to upgrade to in an user-friendly way.</p>

<ol>
<li>Pick a version to upgrade to and run, for example, <code>kubeadm upgrade apply</code> as follows:</li>
</ol>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubeadm upgrade apply v1.8.0</code></pre></div>
<p>You should see output similar to this:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#666">[</span>preflight<span style="color:#666">]</span> Running pre-flight checks
<span style="color:#666">[</span>upgrade<span style="color:#666">]</span> Making sure the cluster is healthy:
<span style="color:#666">[</span>upgrade/health<span style="color:#666">]</span> Checking API Server health: Healthy
<span style="color:#666">[</span>upgrade/health<span style="color:#666">]</span> Checking Node health: All Nodes are healthy
<span style="color:#666">[</span>upgrade/health<span style="color:#666">]</span> Checking Static Pod manifests exists on disk: All manifests exist on disk
<span style="color:#666">[</span>upgrade/config<span style="color:#666">]</span> Making sure the configuration is correct:
<span style="color:#666">[</span>upgrade/config<span style="color:#666">]</span> Reading configuration from the cluster...
<span style="color:#666">[</span>upgrade/config<span style="color:#666">]</span> FYI: You can look at this config file with <span style="color:#b44">&#39;kubectl -n kube-system get cm kubeadm-config -o yaml&#39;</span>
<span style="color:#666">[</span>upgrade/version<span style="color:#666">]</span> You have chosen to upgrade to version <span style="color:#b44">&#34;v1.8.0&#34;</span>
<span style="color:#666">[</span>upgrade/versions<span style="color:#666">]</span> Cluster version: v1.7.1
<span style="color:#666">[</span>upgrade/versions<span style="color:#666">]</span> kubeadm version: v1.8.0
<span style="color:#666">[</span>upgrade/prepull<span style="color:#666">]</span> Will prepull images <span style="color:#a2f;font-weight:bold">for</span> components <span style="color:#666">[</span>kube-apiserver kube-controller-manager kube-scheduler<span style="color:#666">]</span>
<span style="color:#666">[</span>upgrade/prepull<span style="color:#666">]</span> Prepulling image <span style="color:#a2f;font-weight:bold">for</span> component kube-scheduler.
<span style="color:#666">[</span>upgrade/prepull<span style="color:#666">]</span> Prepulling image <span style="color:#a2f;font-weight:bold">for</span> component kube-apiserver.
<span style="color:#666">[</span>upgrade/prepull<span style="color:#666">]</span> Prepulling image <span style="color:#a2f;font-weight:bold">for</span> component kube-controller-manager.
<span style="color:#666">[</span>apiclient<span style="color:#666">]</span> Found <span style="color:#666">0</span> Pods <span style="color:#a2f;font-weight:bold">for</span> label selector k8s-app<span style="color:#666">=</span>upgrade-prepull-kube-scheduler
<span style="color:#666">[</span>apiclient<span style="color:#666">]</span> Found <span style="color:#666">1</span> Pods <span style="color:#a2f;font-weight:bold">for</span> label selector k8s-app<span style="color:#666">=</span>upgrade-prepull-kube-scheduler
<span style="color:#666">[</span>apiclient<span style="color:#666">]</span> Found <span style="color:#666">1</span> Pods <span style="color:#a2f;font-weight:bold">for</span> label selector k8s-app<span style="color:#666">=</span>upgrade-prepull-kube-apiserver
<span style="color:#666">[</span>apiclient<span style="color:#666">]</span> Found <span style="color:#666">1</span> Pods <span style="color:#a2f;font-weight:bold">for</span> label selector k8s-app<span style="color:#666">=</span>upgrade-prepull-kube-controller-manager
<span style="color:#666">[</span>upgrade/prepull<span style="color:#666">]</span> Prepulled image <span style="color:#a2f;font-weight:bold">for</span> component kube-apiserver.
<span style="color:#666">[</span>upgrade/prepull<span style="color:#666">]</span> Prepulled image <span style="color:#a2f;font-weight:bold">for</span> component kube-controller-manager.
<span style="color:#666">[</span>upgrade/prepull<span style="color:#666">]</span> Prepulled image <span style="color:#a2f;font-weight:bold">for</span> component kube-scheduler.
<span style="color:#666">[</span>upgrade/prepull<span style="color:#666">]</span> Successfully prepulled the images <span style="color:#a2f;font-weight:bold">for</span> all the control plane components
<span style="color:#666">[</span>upgrade/apply<span style="color:#666">]</span> Upgrading your Static Pod-hosted control plane to version <span style="color:#b44">&#34;v1.8.0&#34;</span>...
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Writing upgraded Static Pod manifests to <span style="color:#b44">&#34;/etc/kubernetes/tmp/kubeadm-upgraded-manifests432902769&#34;</span>
<span style="color:#666">[</span>controlplane<span style="color:#666">]</span> Wrote Static Pod manifest <span style="color:#a2f;font-weight:bold">for</span> component kube-apiserver to <span style="color:#b44">&#34;/etc/kubernetes/tmp/kubeadm-upgraded-manifests432902769/kube-apiserver.yaml&#34;</span>
<span style="color:#666">[</span>controlplane<span style="color:#666">]</span> Wrote Static Pod manifest <span style="color:#a2f;font-weight:bold">for</span> component kube-controller-manager to <span style="color:#b44">&#34;/etc/kubernetes/tmp/kubeadm-upgraded-manifests432902769/kube-controller-manager.yaml&#34;</span>
<span style="color:#666">[</span>controlplane<span style="color:#666">]</span> Wrote Static Pod manifest <span style="color:#a2f;font-weight:bold">for</span> component kube-scheduler to <span style="color:#b44">&#34;/etc/kubernetes/tmp/kubeadm-upgraded-manifests432902769/kube-scheduler.yaml&#34;</span>
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Moved upgraded manifest to <span style="color:#b44">&#34;/etc/kubernetes/manifests/kube-apiserver.yaml&#34;</span> and backed up old manifest to <span style="color:#b44">&#34;/etc/kubernetes/tmp/kubeadm-backup-manifests155856668/kube-apiserver.yaml&#34;</span>
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Waiting <span style="color:#a2f;font-weight:bold">for</span> the kubelet to restart the component
<span style="color:#666">[</span>apiclient<span style="color:#666">]</span> Found <span style="color:#666">1</span> Pods <span style="color:#a2f;font-weight:bold">for</span> label selector <span style="color:#b8860b">component</span><span style="color:#666">=</span>kube-apiserver
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Component <span style="color:#b44">&#34;kube-apiserver&#34;</span> upgraded successfully!
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Moved upgraded manifest to <span style="color:#b44">&#34;/etc/kubernetes/manifests/kube-controller-manager.yaml&#34;</span> and backed up old manifest to <span style="color:#b44">&#34;/etc/kubernetes/tmp/kubeadm-backup-manifests155856668/kube-controller-manager.yaml&#34;</span>
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Waiting <span style="color:#a2f;font-weight:bold">for</span> the kubelet to restart the component
<span style="color:#666">[</span>apiclient<span style="color:#666">]</span> Found <span style="color:#666">1</span> Pods <span style="color:#a2f;font-weight:bold">for</span> label selector <span style="color:#b8860b">component</span><span style="color:#666">=</span>kube-controller-manager
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Component <span style="color:#b44">&#34;kube-controller-manager&#34;</span> upgraded successfully!
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Moved upgraded manifest to <span style="color:#b44">&#34;/etc/kubernetes/manifests/kube-scheduler.yaml&#34;</span> and backed up old manifest to <span style="color:#b44">&#34;/etc/kubernetes/tmp/kubeadm-backup-manifests155856668/kube-scheduler.yaml&#34;</span>
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Waiting <span style="color:#a2f;font-weight:bold">for</span> the kubelet to restart the component
<span style="color:#666">[</span>apiclient<span style="color:#666">]</span> Found <span style="color:#666">1</span> Pods <span style="color:#a2f;font-weight:bold">for</span> label selector <span style="color:#b8860b">component</span><span style="color:#666">=</span>kube-scheduler
<span style="color:#666">[</span>upgrade/staticpods<span style="color:#666">]</span> Component <span style="color:#b44">&#34;kube-scheduler&#34;</span> upgraded successfully!
<span style="color:#666">[</span>uploadconfig<span style="color:#666">]</span> Storing the configuration used in ConfigMap <span style="color:#b44">&#34;kubeadm-config&#34;</span> in the <span style="color:#b44">&#34;kube-system&#34;</span> Namespace
<span style="color:#666">[</span>bootstraptoken<span style="color:#666">]</span> Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order <span style="color:#a2f;font-weight:bold">for</span> nodes to get long term certificate credentials
<span style="color:#666">[</span>bootstraptoken<span style="color:#666">]</span> Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
<span style="color:#666">[</span>addons<span style="color:#666">]</span> Applied essential addon: kube-dns
<span style="color:#666">[</span>addons<span style="color:#666">]</span> Applied essential addon: kube-proxy

<span style="color:#666">[</span>upgrade/successful<span style="color:#666">]</span> SUCCESS! Your cluster was upgraded to <span style="color:#b44">&#34;v1.8.0&#34;</span>. Enjoy!

<span style="color:#666">[</span>upgrade/kubelet<span style="color:#666">]</span> Now that your control plane is upgraded, please proceed with upgrading your kubelets in turn.</code></pre></div>
<p><code>kubeadm upgrade apply</code> does the following:</p>

<ul>
<li>It checks that your cluster is in an upgradeable state, that is:

<ul>
<li>The API Server is reachable,</li>
<li>All nodes are in the <code>Ready</code> state, and</li>
<li>The control plane is healthy</li>
</ul></li>
<li>It enforces the version skew policies.</li>
<li>It makes sure the control plane images are available or available to pull to the machine.</li>
<li>It upgrades the control plane components or rollbacks if any of them fails to come up.</li>
<li>It applies the new <code>kube-dns</code> and <code>kube-proxy</code> manifests and enforces that all necessary RBAC rules are created.</li>
</ul>

<ol>
<li>Manually upgrade your Software Defined Network (SDN).</li>
</ol>

<p>Your Container Network Interface (CNI) provider might have its own upgrade instructions to follow now.
   Check the <a href="../../../../concepts/cluster-administration/addons/index.html">addons</a> page to
   find your CNI provider and see if there are additional upgrade steps
   necessary.</p>

<ol>
<li>Add RBAC permissions for automated certificate rotation. In the future, kubeadm will perform this step automatically:</li>
</ol>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubectl create clusterrolebinding kubeadm:node-autoapprove-certificate-rotation --clusterrole<span style="color:#666">=</span>system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group<span style="color:#666">=</span>system:nodes</code></pre></div>
<h2 id="upgrading-your-master-and-node-packages">Upgrading your master and node packages</h2>

<p>For each host (referred to as <code>$HOST</code> below) in your cluster, upgrade <code>kubelet</code> by executing the following commands:</p>

<ol>
<li>Prepare the host for maintenance, marking it unschedulable and evicting the workload:</li>
</ol>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubectl drain <span style="color:#b8860b">$HOST</span> --ignore-daemonsets</code></pre></div>
<p>When running this command against the master host, this error is expected and can be safely ignored (since there are static pods running on the master):</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">node <span style="color:#b44">&#34;master&#34;</span> already cordoned
error: pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet <span style="color:#666">(</span>use --force to override<span style="color:#666">)</span>: etcd-kubeadm, kube-apiserver-kubeadm, kube-controller-manager-kubeadm, kube-scheduler-kubeadm</code></pre></div>
<ol>
<li>Upgrade the Kubernetes package versions on the <code>$HOST</code> node by using a Linux distribution-specific package manager:</li>
</ol>

<p>If the host is running a Debian-based distro such as Ubuntu, run:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">apt-get update
apt-get upgrade</code></pre></div>
<p>If the host is running CentOS or the like, run:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">yum update</code></pre></div>
<p>Now the new version of the <code>kubelet</code> should be running on the host. Verify this using the following command on <code>$HOST</code>:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">systemctl status kubelet</code></pre></div>
<ol>
<li>Bring the host back online by marking it schedulable:</li>
</ol>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubectl uncordon <span style="color:#b8860b">$HOST</span></code></pre></div>
<ol>
<li>After upgrading <code>kubelet</code> on each host in your cluster, verify that all nodes are available again by executing the following (from anywhere, for example, from outside the cluster):</li>
</ol>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">kubectl get nodes</code></pre></div>
<p>If the <code>STATUS</code> column of the above command shows <code>Ready</code> for all of your hosts, you are done.</p>

<h2 id="recovering-from-a-bad-state">Recovering from a bad state</h2>

<p>If <code>kubeadm upgrade</code> somehow fails and fails to roll back, due to an unexpected shutdown during execution for instance,
you may run <code>kubeadm upgrade</code> again as it is idempotent and should eventually make sure the actual state is the desired state you are declaring.</p>

<p>You can use <code>kubeadm upgrade</code> to change a running cluster with <code>x.x.x --&gt; x.x.x</code> with <code>--force</code>, which can be used to recover from a bad state.</p>



















				<div class="issue-button-container">
					<p><a href="index.html"><img src="https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-8.md?pixel" alt="Analytics" /></a></p>
					
					
					<script type="text/javascript">
					PDRTJS_settings_8345992 = {
					"id" : "8345992",
					"unique_id" : "\/docs\/tasks\/administer-cluster\/kubeadm\/kubeadm-upgrade-1-8\/",
					"title" : "Upgrading kubeadm clusters from 1.7 to 1.8",
					"permalink" : "https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/kubeadm\/kubeadm-upgrade-1-8\/"
					};
					(function(d,c,j){if(!document.getElementById(j)){var pd=d.createElement(c),s;pd.id=j;pd.src=('https:'==document.location.protocol)?'https://polldaddy.com/js/rating/rating.js':'http://i0.poll.fm/js/rating/rating.js';s=document.getElementsByTagName(c)[0];s.parentNode.insertBefore(pd,s);}}(document,'script','pd-rating-js'));
					</script>
					<a href="index.html" onclick="window.open('https://github.com/kubernetes/website/issues/new?title=Issue%20with%20' +
					'k8s.io'+window.location.pathname)" class="button issue">Create an Issue</a>
					
					
					
					<a href="../../../../editdocs#docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-8.md" class="button issue">Edit this Page</a>
					
				</div>
			</div>
		</section>
		<footer>
    <main class="light-text">
        <nav>
            
            
            
            <a href="../../../../home.1">Documentation</a>
            
            <a href="../../../../../blog/index.html">Blog</a>
            
            <a href="../../../../../partners/index.html">Partners</a>
            
            <a href="../../../../../community/index.html">Community</a>
            
            <a href="../../../../../case-studies/index.html">Case Studies</a>
            
        </nav>
        <div class="social">
            <div>
                <a href="https://twitter.com/kubernetesio" class="twitter"><span>twitter</span></a>
                <a href="https://github.com/kubernetes/kubernetes" class="github"><span>Github</span></a>
                <a href="http://slack.k8s.io/" class="slack"><span>Slack</span></a>
            </div>
            <div>
                <a href="http://stackoverflow.com/questions/tagged/kubernetes" class="stack-overflow"><span>Stack Overflow</span></a>
                <a href="https://discuss.kubernetes.io" class="mailing-list"><span>Forum</span></a>
                <a href="https://calendar.google.com/calendar/embed?src=nt2tcnbtbied3l6gi2h29slvc0%40group.calendar.google.com" class="calendar"><span>Events Calendar</span></a>
            </div>
            <div>
                <a href="../../../../getting-started-guides/index.html" class="button">Get Kubernetes</a>
                <a href="https://git.k8s.io/community/contributors/guide" class="button">Contribute</a>
            </div>
        </div>
        <div id="miceType" class="center">
            &copy; 2018 The Kubernetes Authors | Documentation Distributed under <a href="https://git.k8s.io/website/LICENSE" class="light-text">CC BY 4.0</a>
        </div>
        <div id="miceType" class="center">
            Copyright &copy; 2018 The Linux Foundation&reg;. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our <a href="https://www.linuxfoundation.org/trademark-usage" class="light-text">Trademark Usage page</a>
        </div>
    </main>
</footer>

		<button class="flyout-button" onclick="kub.toggleToc()"></button>

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-36037335-10', 'auto');
ga('send', 'pageview');


(function () {
    window.addEventListener('DOMContentLoaded', init)

        
        function init() {
            window.removeEventListener('DOMContentLoaded', init)
                hideNav()
        }

    function hideNav(toc){
        if (!toc) toc = document.querySelector('#docsToc')
        if (!toc) return
            var container = toc.querySelector('.container')

                
                if (container) {
                    if (container.childElementCount === 0 || toc.querySelectorAll('a.item').length === 1) {
                        toc.style.display = 'none'
                            document.getElementById('docsContent').style.width = '100%'
                    }
                } else {
                    requestAnimationFrame(function () {
                        hideNav(toc)
                    })
                }
    }
})();
</script>



	</body>
</html>